典型的 web 应用的处理过程
(这个知识点,在工作中问的话,会被骂的)
小王,在家里,看新浪新闻时,先在浏览器中,输入 新浪首页URL: http://sina.com.cn/news 回车。
(小王的电脑上的)浏览器,就会发起一个 http request 到 http://sina.com.cn/news
这个http request经过一些过程(域名解析阿,路由阿。。) 就会发送到 sina.com.cn 这个服务器上。 3.1 小王的电脑, 连接上的网络的DNS服务器,把 sina.com.cn 这个域名,解析成一个 ip 地址。 (可以通过 ping sina.com.cn 来知晓)
$ ping sina.com.cn
PING sina.com.cn (202.108.33.60) 56(84) bytes of data.
这样的话,小王的电脑就知道了,sina.com.cn 的IP 地址是: 202.108.33.60
3.2 小王的电脑,就把 小王的请求, 发送到上面的ip 地址。 并且,加上若干信息:
host: 202.108.33.60 (目的地) path: '/news' (请求的路径) method: GET (request的方法,一般是GET/POST)
3.3 经过20层路由, 这个请求, 就由小王家,发到了 新浪的服务器上。 举个例子,小王家住: 青海省,西宁市,幸福县,嗨皮乡,葡萄村。 路由的过程:
- 小王 -> 葡萄村 路由器。
- 葡萄寸路由器 -> 嗨皮乡 路由器
- 嗨皮乡路由器发送到 -> 幸福县。
- .. -> 西宁市路由器
- 西宁市 -> 青海省路由器
- 青海省路由器 -> 北京市 路由器
- 北京市路由器 -> 海淀区路由器
- 海淀区路由器 -> 中关村路由器
- 中关村路由器 -> 新浪大厦机房
- 机房路由器 -> 对应的服务器上。
下面是一个真实的例子:
# traceroute www.baidu.com
traceroute to www.baidu.com (61.135.169.125), 30 hops max, 40 byte packets
1 192.168.74.2 (192.168.74.2) 2.606 ms 2.771 ms 2.950 ms
2 211.151.56.57 (211.151.56.57) 0.596 ms 0.598 ms 0.591 ms
3 211.151.227.206 (211.151.227.206) 0.546 ms 0.544 ms 0.538 ms
4 210.77.139.145 (210.77.139.145) 0.710 ms 0.748 ms 0.801 ms
5 202.106.42.101 (202.106.42.101) 6.759 ms 6.945 ms 7.107 ms
6 61.148.154.97 (61.148.154.97) 718.908 ms * bt-228-025.bta.net.cn (202.106.228.25) 5.177 ms
7 124.65.58.213 (124.65.58.213) 4.343 ms 4.336 ms 4.367 ms
8 202.106.35.190 (202.106.35.190) 1.795 ms 61.148.156.138 (61.148.156.138) 1.899 ms 1.951 ms
9 * * *
30 * * *
新浪服务器,收到了小王发来的 http request之后,就对它进行一些 处理。最终,返回了HTML内容。 (response)
上面的 response . 经过20多层路由, 返回到了 小王家电脑
小王的浏览器中, 显示了 第四步的 html 内容。
(中国联通,中国移动,电信,里面的知识体系,就是这个)
大师的被骂过程。
在2012年年底,(工作的第七年),我在优酷,开会。20个人,技术会。 里面提到了一个点: TCP/SOCKET协议。
我不懂。因为过去的工作中,从来没用过。我就很诚实的提问了 :
我的老板的老板,当时就说: 我靠,这都不知道,要我直接开掉阿! 给我的老板弄的特别难堪。
(我们关系很好。因为我的工作特别重要。我干的特别好。所以他很 照顾我。我的老板也很照顾我。但是,直到我离职, 还是不懂那天 开会时候的那个概念。。。)
知识体系的原则
- 实用主义: 用到的知识,必须掌握熟练。
- 不实用的(工作中几乎用不到的)东西, 可以不理解。(网络4层协议。 6层协议) 需要的时候,现学就赶趟。
- 实用主义:不要让自己在技术上站队。你需要什么,就学什么。 不要催眠自己: 我是一个web程序员,我不做 android/ios.